home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
JCSM Shareware Collection 1993 November
/
JCSM Shareware Collection - 1993-11.iso
/
cl720
/
psk130.lzh
/
EDEMO.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-02-18
|
3KB
|
147 lines
/*
edemo.C
Event Handler Demonstration
Copyright (C) 1993, Geoff Friesen B.Sc.
All rights reserved.
Borland C++ 3.1
*/
#include <dos.H>
#include <process.H>
#include <stdio.H>
#include <stdlib.H>
#include <time.H>
#include "event.H"
#include "kbd.H"
#include "mouse.H"
#include "video.H"
int rows = 25;
int cattr = (BLUE << 4) | WHITE;
int bwattr = LIGHTGRAY << 4;
void cleanup (void);
void main (int argc, char **argv)
{
event e;
int adaptor = v_aa (), x, y;
if (_osmajor < 3 || _osmajor == 3 && _osminor < 30)
{
fprintf (stderr, "edemo: invalid DOS version number - "
"needs 3.30+\n");
exit (ERROR);
}
if (argc > 2 ||
argc == 2 && (rows = atoi (argv [1])) != 43 && rows != 50)
{
fprintf (stderr, "edemo: invalid command line\n");
exit (ERROR);
}
atexit (cleanup);
v_setattr ((v_setup (rows) == C80) ? cattr : bwattr);
rows = v_getrows ();
v_cursor (CHIDE);
v_clear(1, 1, 80, rows);
v_border (DOUBLE_LINE, 1, 1, 80, rows-1);
v_gotoxy (1, rows);
v_cputs ("EDEMO ■ Event DEMOnstration ■ Press S to suspend");
v_gotoxy (73, rows);
v_cputs ("F10-Exit");
if (e_init (100) == ERROR)
{
fprintf (stderr, "edemo: unable to install event handler\n");
exit (ERROR);
}
mrowrange (0, (rows-1)*8); /* set maximum row (8 pixels/row) */
mmoveto (0, 0);
(void) e_settimer (0, 3);
(void) e_settimer (5, 40);
(void) e_flush ();
(void) e_show ();
randomize();
while (1)
{
(void) e_fetch (&e);
if (e.type == KEY && e.parm1 == F10) /* keystroke exit */
break;
if (e.type == KEY && e.parm1 == 'S' ||
e.type == MOUSE && (e.parm1 & ME_LBP) &&
(e.parm3 >> 3) == 36 && (e.parm4 >> 3) == rows-1)
{
(void) e_suspend ();
sleep (3);
(void) e_flush ();
(void) e_resume ();
continue;
}
if (e.type == MOUSE && (e.parm1 & ME_LBP))
{
e.parm3 >>= 3;
e.parm4 >>= 3;
if (e.parm3 >= 72 && e.parm4 == rows-1)
break;
else
continue;
}
if (e.type == TIMER && e.parm1 == 5)
{
if (adaptor != MDA)
v_setattr ((1+random(7)) << 4);
(void) e_hide ();
v_clear(2, 2, 78, rows-3);
(void) e_show ();
continue;
}
if (e.type == TIMER && e.parm1 == 0)
{
x = 2+random(74);
y = 2+random(rows-3);
v_gotoxy (x, y);
(void) e_hide ();
v_cputs ("EDEMO");
(void) e_show ();
continue;
}
}
(void) e_hide ();
(void) e_close ();
exit (OK);
}
void cleanup (void)
{
int frequency;
for (frequency = 100; frequency < 1500; frequency += 100)
{
sound (frequency);
delay (50);
}
nosound ();
v_cleanup ();
}